#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//我们已经有了数组这种数据结构,为什么还需要链表这种结构?
//数组是连续的空间,往数组插入一个元素,那么需要大量移动数组,这个就导致效率低下
//另外数组在初始化是它的元素个数已经确定下来了,所以是静态的。
//但是数组好出就是通过下标查找元素很快


//链表:是由一系列元素节点连接起来,每个节点包含一个数据域和指针域
//数据域保存用户的数据 指针域保存下一个节点的地址。
//链表加入一个元素是先申请了一块数据然后连接起来,所以它在内存是非连续 内存是动态的分配的
//链表插入一个元素和删除一个元素都是断开连接 销毁元素自己的内存,所以很快。

//但是查找一个元素相较于数组慢点,需要遍历才能确定 数组通过下标就能确定
//链表相对于数组来讲,多了一个指针域的空间,所以多了开销


//拿到链表的第一个节点,就相当于拿到了整个节点 因为可以一值next,next,next,...


//链表分类
//	静态链表 动态链表
//	单向链表 双向链表 循环链表 单向循环链表 双向循环链表

//链表分带头不带头
//头节点不保存任何数据
//不带头的节点的链表 如果在头部插入元素,还需要判断当前位置是否是头节点
//带头的节点链表,是将头部节点始终放在那里不动,这样少了一次判断是否是头节点

int main(int argc, char const *argv[])
{
	return 0;
}
